<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 
 */
class Editor extends CI_Controller {
	
	public function __construct() {
		parent::__construct();
		$this->load->library(array('session','form_validation','session'));
		$this->load->helper(array('url','form'));
		$this->load->model('Evento_model');
	}
	
	public function index()
	{
		if($this->session->userdata('perfil') == FALSE || $this->session->userdata('perfil') != 'editor')
		{
			redirect(base_url().'login');
		}
		$tiposCate = $this->cargarCatTipos();

		$listaEventos = $this->Evento_model->getEventosEditor($this->session->userdata('id_usuario'));
      	$data = array('rs_eventos' => $listaEventos);
		
		$page = "mostrar_eventos";
      	$this->cargarPagina($page, $tiposCate, $data);
	}
	
	public function cargarCatTipos()
	{
		$tipos = $this->Evento_model->getTipos();

		$selectorTipos = array();
		while($tablerow = mysql_fetch_array($tipos)) 
		{
 			 $selectorTipos[$tablerow['id_tipo']] = $tablerow['nombre'];
		}
		$data['tipos'] = $selectorTipos;
		
		$categorias = $this->Evento_model->getCategorias();
		
		$selectorCategorias = array();
		while($tablerow = mysql_fetch_array($categorias))
		{
 			 $selectorCategorias[$tablerow['id_categoria']] = $tablerow['nombre'];
		}
		$data['categorias'] = $selectorCategorias;
		return $data;
	}
	
	public function cargarPagina($page, $tiposCate, $data)
	{
		$datos["inicio"] = 'class="current_page_item"';
		$datos["contact"] = '';
		$datos["unete"] = '';
		$datos["acercaDe"] = '';  
		$v_page["header"] = $this->load->view("header.php", $datos , TRUE);
		$v_page["banner"] = $this->load->view("banner.html", '' , TRUE);

		$v_page["leftside"] = $this->load->view("leftside", $tiposCate , TRUE);
		
		$mostrarEventos["body"] = $this->load->view($page, $data , TRUE);
		$v_page["centralgrid"] = $this->load->view("centralgrid", $mostrarEventos , TRUE);

		$data["eventosPendientes"] = mysql_fetch_assoc($this->Evento_model->getNumEventosPendientesEditor($this->session->userdata('id_usuario')));
		$editor["body"] = $this->load->view("editor_view", $data , TRUE);
		$editor["header"] = "Bienvenido de Nuevo";
		$v_page["rightside"] = $this->load->view("rightside", $editor , TRUE);
		
		$v_page["footer"] = $this->load->view("footer.html", '' , TRUE);

		$this->load->view('index', $v_page);
	}

	public function new_event()
	{
		$tiposCate = $this->cargarCatTipos();
		$localizaciones = $this->Evento_model->getLocalizaciones();

		$selectorLocalizaciones = array();
		while($tablerow = mysql_fetch_array($localizaciones)) 
		{
 			 $selectorLocalizaciones[$tablerow['id_localizacion']] = $tablerow['nombre'];
		}
		$data['localizaciones'] = $selectorLocalizaciones;
		
		$page = "newEvent_view";
      	$this->cargarPagina($page, $tiposCate, $data);
	}

	public function comprobarNew_event()
	{
		$this->form_validation->set_rules('tituloEvento', 'titulo del evento', 'required|trim|min_length[1]|max_length[50]|xss_clean');
        $this->form_validation->set_rules('desBasica', 'descripcion basica del evento', 'required|trim|min_length[1]|max_length[500]|xss_clean');
   		$this->form_validation->set_rules('desGeneral', 'descripcion general del evento', 'required|trim|min_length[1]|max_length[1000]|xss_clean');

        //lanzamos mensajes de error si es que los hay
        $this->form_validation->set_message('required', 'El %s es requerido');
        $this->form_validation->set_message('min_length', 'El %s debe tener al menos %s carácteres');
        $this->form_validation->set_message('max_length', 'El %s debe tener al menos %s carácteres');

        if($this->form_validation->run() == FALSE)
        {
        	//$this->index();
        	redirect(base_url()."index.php/editor/new_event");
        }
        else
        {
        	$tituloEvento = $this->input->post('tituloEvento');
			$descBasica = $this->input->post('desBasica');
			$descGeneral = $this->input->post('desGeneral');

			$categorias = $this->Evento_model->getCategorias();
			$selectorCategorias = array();
			while($tablerow = mysql_fetch_array($categorias)) 
			{
 				 if ($this->input->post($tablerow['nombre']))
 				 {
 				 	$selectorEscogidas[$tablerow['id_categoria']] = $tablerow['id_categoria'];
 				 }
			}
			
			$tipo = $this->input->post('tipo');
			$fechaInicial = $this->input->post('fechaInicial');
			$fechaFinal = $this->input->post('fechaFinal');
			$localizacion = $this->input->post('localizacion');
			$precio = $this->input->post('precio');
			$aforo = $this->input->post('aforo');

			$this->Evento_model->saveEvent($tituloEvento, $descBasica, $descGeneral, $tipo, $selectorEscogidas, 
			$precio, $localizacion, $this->session->userdata('id_usuario'), $aforo, $fechaInicial, $fechaFinal);
        	
        	$this->index();
        }
	}

	public function pending_Events()
	{
		$tiposCate = $this->cargarCatTipos();

		$listaEventos = $this->Evento_model->getEventosPendientesEditor($this->session->userdata('id_usuario'));
      	$data = array('rs_eventos' => $listaEventos);
		
		$page = "mostrar_eventos";
      	$this->cargarPagina($page, $tiposCate, $data);
	}

	public function listByTipo($id_tipo)
	{	
		$tiposCate = $this->cargarCatTipos();

      	$listaEventos = $this->Evento_model->getEventosByTipo($id_tipo);
  		$data = array('rs_eventos' => $listaEventos);

		$page = "mostrar_eventos";
      	$this->cargarPagina($page, $tiposCate, $data);
	}
	
	public function listByCategoria($id_categoria)
	{	
		$tiposCate = $this->cargarCatTipos();

      	$listaEventos = $this->Evento_model->getEventosByCategoria($id_categoria);
  		$data = array('rs_eventos' => $listaEventos);
  		
		$page = "mostrar_eventos";
      	$this->cargarPagina($page, $tiposCate, $data);
	}
	
	public function show_event($id_evento)
	{		
		$id_usuario = $this->session->userdata('id_usuario');
		$tiposCate = $this->cargarCatTipos();
		
		$data["comentario"] = mysql_fetch_assoc($this->Evento_model->getComment($id_usuario, $id_evento));
      	$valor_media = mysql_fetch_assoc($this->Evento_model->getValoracion($id_evento));
		$data["avg_vot"] = $valor_media["AVG(valoracion)"];
		$this->Evento_model->modifPuntuacion($data["avg_vot"], $id_evento);
      	$data["evento"] = mysql_fetch_assoc($this->Evento_model->getEvento($id_evento));
      	$data["perfilEvento"] = mysql_fetch_assoc($this->Evento_model->eventProfile($id_evento));

      	$coordenadas["localizacion"] = mysql_fetch_assoc($this->Evento_model->getCoordenadas($id_evento, $data["evento"]["fecha_ini"], $data["evento"]["fecha_fin"]));

      	$this->load->library('googlemaps');

      	$posicion = $coordenadas["localizacion"]["lat"].", ".$coordenadas["localizacion"]["long"];
		$config['center'] = $posicion;
		$config['zoom'] = '18';

		$this->googlemaps->initialize($config);

		$marker = array();
		$marker['position'] = $posicion;
		$this->googlemaps->add_marker($marker);
		$data['map'] = $this->googlemaps->create_map();
		
		$page = "event_view";
      	$this->cargarPagina($page, $tiposCate, $data);
	}
	
	public function edit_event($id_evento)
	{
		$categorias = $this->Evento_model->getCategorias();
		$tipos = $this->Evento_model->getTipos();
		$localizaciones = $this->Evento_model->getLocalizaciones();

		$selectorCategorias = array();
		while($tablerow = mysql_fetch_array($categorias)) {
 			 $selectorCategorias[$tablerow['id_categoria']] = $tablerow['nombre'];
		}
		$data['categorias'] = $selectorCategorias;

		$selectorTipos = array();
		while($tablerow = mysql_fetch_array($tipos)) {
 			 $selectorTipos[$tablerow['id_tipo']] = $tablerow['nombre'];
		}
		$data['tipos'] = $selectorTipos;
	
		$eventos = $this->Evento_model->getEventCategorias($id_evento);
		$eventCategorias = array();
		while($tablerow = mysql_fetch_array($eventos)) {
 			 $eventCategorias[$tablerow['id_categoria']] = $tablerow['nombre'];
		}
		$data['eventoCategorias'] = $eventCategorias;

		$selectorLocalizaciones = array();
		while($tablerow = mysql_fetch_array($localizaciones)) {
 			 $selectorLocalizaciones[$tablerow['id_localizacion']] = $tablerow['nombre'];
		}
		$data['localizaciones'] = $selectorLocalizaciones;

		$evento = mysql_fetch_assoc($this->Evento_model->getEvento($id_evento));
		$data['localizacionActual'] = mysql_fetch_assoc($this->Evento_model->getLocalizacionActual($id_evento, 
			$evento["fecha_ini"], $evento["fecha_fin"]));

		$datos["inicio"] = '';
		$datos["contact"] = '';
		$datos["unete"] = '';
		$datos["acercaDe"] = '';  
		$v_page["header"] = $this->load->view("header.php", $datos , TRUE);
		$v_page["banner"] = $this->load->view("banner.html", '' , TRUE);

		$v_page["leftside"] = $this->load->view("leftside", $data , TRUE);
		
		$data["token"] = $this->input->post('token');
		$editor["body"] = $this->load->view("edit_view", $evento , TRUE);
		$v_page["centralgrid"] = $this->load->view("centralgrid", $editor , TRUE);

		$data["eventosPendientes"] = mysql_fetch_assoc($this->Evento_model->getNumEventosPendientesEditor($this->session->userdata('id_usuario')));
		$editor["header"] = "Bienvenido de Nuevo";
		$editor["body"] = $this->load->view("editor_view", $data , TRUE);
		$v_page["rightside"] = $this->load->view("rightside", $editor , TRUE);

		$v_page["footer"] = $this->load->view("footer.html", '' , TRUE);

		$this->load->view('index', $v_page);
	}

	public function comprobarEdit_event()
	{
		$this->form_validation->set_rules('tituloEvento', 'titulo del evento', 'required|trim|min_length[1]|max_length[50]|xss_clean');
        $this->form_validation->set_rules('desBasica', 'descripcion basica del evento', 'required|trim|min_length[1]|max_length[500]|xss_clean');
   		$this->form_validation->set_rules('desGeneral', 'descripcion general del evento', 'required|trim|min_length[1]|max_length[1000]|xss_clean');

        //lanzamos mensajes de error si es que los hay
        $this->form_validation->set_message('required', 'El %s es requerido');
        $this->form_validation->set_message('min_length', 'El %s debe tener al menos %s carácteres');
        $this->form_validation->set_message('max_length', 'El %s debe tener al menos %s carácteres');

        if($this->form_validation->run() == FALSE)
        {
        	//$this->index();
        	redirect(base_url()."index.php/editor/new_event");
        }
        else
        {
        	$id_evento = $this->input->post('id_evento');
        	$tituloEvento = $this->input->post('tituloEvento');
			$descBasica = $this->input->post('desBasica');
			$descGeneral = $this->input->post('desGeneral');

			$categorias = $this->Evento_model->getCategorias();
			$selectorCategorias = array();
			while($tablerow = mysql_fetch_array($categorias)) 
			{
 				 if ($this->input->post($tablerow['nombre']))
 				 {
 				 	$selectorEscogidas[$tablerow['id_categoria']] = $tablerow['id_categoria'];
 				 }
			}
			
			$tipo = $this->input->post('tipo');
			$fechaInicial = $this->input->post('fechaInicial');
			$fechaFinal = $this->input->post('fechaFinal');
			$localizacion = $this->input->post('localizacion');
			$precio = $this->input->post('precio');
			$aforo = $this->input->post('aforo');

			$this->Evento_model->editEvent($id_evento, $tituloEvento, $descBasica, $descGeneral, $tipo, $selectorEscogidas, 
			$precio, $localizacion, $fechaInicial, $fechaFinal, $aforo);
        	
        	$this->index();
        }
	}

	public function show_comments($id_evento)
	{		
		$tiposCate = $this->cargarCatTipos();
		$id_usuario = $this->session->userdata('id_usuario');

		$data["evento"] = mysql_fetch_assoc($this->Evento_model->getEvento($id_evento));
      	$data["perfilEvento"] = mysql_fetch_assoc($this->Evento_model->eventProfile($id_evento));
      	
      	$comments = $this->Evento_model->getAllComments($id_evento);
		
		$selectorComments = array();
		$selectorUsuarios = array();
		$selectorFechas = array();
		$selectorIdUsuarios = array();
		while($tablerow = mysql_fetch_array($comments))
		{
 			$selectorComments[$tablerow['id_asistencia']] = $tablerow['comentario'];
			$u_name = mysql_fetch_assoc($this->Evento_model->getNomUsuario($tablerow['id_usuario']));
 			$selectorUsuarios[$tablerow['id_asistencia']] = $u_name["username"];
 			$selectorIdUsuarios[$tablerow['id_asistencia']] = $tablerow['id_usuario'];
 			$selectorFechas[$tablerow['id_asistencia']] = $tablerow['fecha'];
		}
		$data['comments'] = $selectorComments;  
		$data['usuarios'] = $selectorUsuarios;
		$data['fechas'] = $selectorFechas;
		$data['idUsuarios'] = $selectorIdUsuarios;
		
		$page = "comments_view";
      	$this->cargarPagina($page, $tiposCate, $data);
	}

	public function user_comments($id_usuario, $id_evento)
	{		
		$tiposCate = $this->cargarCatTipos();

		$data["evento"] = $id_evento;
      	$user_comments = $this->Evento_model->getAllUserComments($id_usuario);
      	$user_id = mysql_fetch_assoc($this->Evento_model->getNomUsuario($id_usuario));
		$data["user_nom"] = $user_id["username"];
      	
		$selectorComments = array();
		$selectorEventos = array();
		$selectorFechas = array();
		while($tablerow = mysql_fetch_array($user_comments))
		{
 			$selectorComments[$tablerow['id_asistencia']] = $tablerow['comentario'];
			$e_name = mysql_fetch_assoc($this->Evento_model->getNomEvento($tablerow['id_evento']));
 			$selectorEventos[$tablerow['id_asistencia']] = $e_name["titulo_evento"];
 			$selectorFechas[$tablerow['id_asistencia']] = $tablerow['fecha'];
		}
		$data['comments'] = $selectorComments;  
		$data['eventos'] = $selectorEventos;
		$data['fechas'] = $selectorFechas;
      	
		$page = "usercomments_view";
      	$this->cargarPagina($page, $tiposCate, $data);
	}

	public function ver_apuntados($id_evento)
	{
		$tiposCate = $this->cargarCatTipos();

		$data['usuarios'] = $this->Evento_model->getUsuariosApuntadosEvento($id_evento);
		$data['titulo_evento'] = mysql_fetch_assoc($this->Evento_model->getNomEvento($id_evento));
		$data['id_evento'] = $id_evento;
		
		$page = "usersApuntados_view";
      	$this->cargarPagina($page, $tiposCate, $data);
	}

	public function user_events($id_usuario)
	{
		$tiposCate = $this->cargarCatTipos();

		$data["eventos"] = $this->Evento_model->getEventosApuntadosUsuario($id_usuario);

		$page = "mostrar_eventosApuntadosUsuario";
      	$this->cargarPagina($page, $tiposCate, $data);
	}
}